/* Interface for separate chaining hash table */
typedef int ElementType;

/* START: fig5_2.txt */
typedef unsigned int Index;
/* END */

/* START: fig5_7.txt */
#ifndef _HashSep_H
#define _HashSep_H

struct ListNode;
typedef struct ListNode *Position;
struct HashTbl;
typedef struct HashTbl *HashTable;

HashTable InitializeTable(int TableSize);
void DestroyTable(HashTable H);
Position Find(ElementType Key, HashTable H);
void Insert(ElementType Key, HashTable H);
ElementType Retrieve(Position P);
/* Routines such as Delete are MakeEmpty are omitted */

#endif  /* _HashSep_H */
/* END */
